.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
.TH timespec 3type 2024-05-02 "Linux man-pages 6.9.1"
.SH NAME
timespec \- time in seconds and nanoseconds
.SH LIBRARY
Standard C library
.RI ( libc )
.SH SYNOPSIS
.EX
.B #include <time.h>
.P
.B struct timespec {
.BR "    time_t     tv_sec;" "   /* Seconds */"
.RB "    /* ... */" "  tv_nsec;" \
"  /* Nanoseconds [" 0 ", " 999\[aq]999\[aq]999 "] */"
.B };
.EE
.SH DESCRIPTION
Describes times in seconds and nanoseconds.
.P
.I tv_nsec
is of an implementation-defined signed type
capable of holding the specified range.
Under glibc, this is usually
.IR long ,
and
.I long long
on X32.
It can be safely down-cast to any concrete 32-bit integer type for processing.
.SH VERSIONS
Prior to C23,
.I tv_nsec
was
.IR long .
.SH STANDARDS
C11, POSIX.1-2008.
.SH HISTORY
POSIX.1-2001.
.SH NOTES
The following headers also provide this type:
.IR <aio.h> ,
.IR <mqueue.h> ,
.IR <sched.h> ,
.IR <signal.h> ,
.IR <sys/select.h> ,
and
.IR <sys/stat.h> .
.SH SEE ALSO
.BR clock_gettime (2),
.BR clock_nanosleep (2),
.BR nanosleep (2),
.BR timerfd_gettime (2),
.BR timer_gettime (2),
.BR time_t (3type),
.BR timeval (3type)
